1. Technical Field
In general, the present invention relates to client/server networks, and more particularly to techniques for allowing multiple developers to remotely edit, test and debug software application projects.
2. Related Information
Software applications are commonly developed under a collaborative effort by multiple software developers operating within a client/server computing network. A software application is generally represented by one or more project files. Such files may, for example, comprise web pages which contain hypertext markup language (HTML). These files may link to other files within that same project. For example, linked files may represent web pages that are hyperlinked to the web page for the original project file.
The client/server computing environment allows multiple developers to share these project files and collectively work on and develop an application project. In such a computing environment, the software application (represented by one or more project files under development) is generally stored on the server and is accessed and modified by one or more developers residing at the client computers. A developer at the client computer may work on the software project by creating new files or editing existing files on the server. To edit an existing file, the developer typically obtains a copy of the project file from the server. When a new file is created or an existing file is edited, the developer eventually saves the file directly on the server. In the case where the file is linked to other files, the file is processed to identify any of these linked files which require corresponding modifications. The identified linked files are then also modified in accordance with the changes in the original file. These new or edited files are thereafter made available on the server for further potential development.
Conventionally, changes to project files by developers are typically stored directly on the server. The server also typically identifies the linked files and make corresponding changes to these linked files. Various web page development programs, such as Microsoft""s Visual InterDev product, permit developers to create and modify web sites and pages in a central location such as on a server. A web site project, for example, may comprise a plurality of web pages which are linked to each other in various ways so that a user is easily transported between related pages. For large or complex web sites, a large number of files may be involved, with a corresponding complexity in relationships among files.
Present systems, however, do not provide developers with the opportunity to first test and debug the edited and linked files before they are saved on the server. In most cases, the edited files may still require further testing and revising to remove any bugs and errors. Since these files must be saved on the server, however, other developers working on the software project may retrieve and edit these files before these bugs and errors have been corrected. This can result in inconsistent or inoperative software on the server machine while the first user corrects their errors. This can also prevent other developers from continuing their work until the server software project is restored to a consistent state.
Another limitation of present computing systems is that certain developer tasks such as testing and debugging files require the client computer to remain connected to the server. The developer is unable to work on a software project at times where the server is down. Furthermore, in the case where the client computer is a laptop computer, the developer cannot physically detach the computer from the network and still work on the project. Thus, the present computing systems do not adequately allow developers to work on projects remotely or at home.
Yet another limitation discussed above is that present computing systems do not allow multiple developers to concurrently edit the same file(s). Conventional software configuration management tools typically prevent the possibility of two developers simultaneously saving their modifications to the same project file. This limits the potential productivity of developers since only one developer may edit a file at a given time even though the two developers wish to edit different portions of that file.
In addition, problems due to inconsistencies, bugs, and other errors may develop when multiple developers attempt to add or modify files to a large project of interrelated files. For example, consider the case where one developer edits a first file at the same time that a second developer edits a second file, where the first file contains a link to the second file. When the first developer saves the modified first file on the server, the second (linked) file may require corresponding changes (e.g., a reference to the second file must be modified based on change made to the first file). However, since the second developer may still be editing the second file at that time, the second file may not be available to make the corresponding change. Alternatively, when the second developer subsequently saves his/her changes on the server, the first developer""s changes to the second file may be erased. In systems which provide automatic updates to links, inconsistent or erroneous results may occur.
The present invention solves many of the aforementioned problems by providing, in one embodiment, a client computer within an extended client/server computing paradigm, the client computer having an Integrated Development Environment (IDE) that is capable of editing and locally testing project files before they are stored on the server. In this extended model, a client computer includes a working web storage area for storing working copies of project files which make up the software project, a client/server interface for processing communications between the client and the server, and an IDE which provides a user interface for the developer and manages the client/server interface and working web storage. A server computer includes a server extension component for communicating between the server and the client and a master web storage for storing master copies of project files. The present invention may also include a source control system which manages project files that are under source code control.
The present invention allows a developer to locally modify and test one or more project files before they are eventually saved on the server. When a project file is modified and saved on the client computer, corresponding changes are automatically made to any linked files which reside on the client computer. The developer may thereby test and debug the project file and any linked files before the changes are saved on the master copies of these project files on the server. When a project file is ready to be saved on the server, only the project file which was edited by the developer is transferred over to the server. The server thereafter processes the project file to identify the linked files and modifies these linked files in accordance with the changes to the project file. The client computer thereby simulates a computing environment that is similar to that of the server to allow the developer to locally test the project files.
The present invention thereby also allows multiple developers to cooperatively develop software application projects by using the working web concept to allow remote editing, testing and debugging project files on the client computers before they are saved on the server and made accessible to the other developers. In addition, relationships between files are maintained and updated on the client computer so that the developer may completely test all interrelationships before presenting changes to other developers. Further, developers are provided with means for working on project files remotely without a connection to the server. The present invention also allows multiple developers to concurrently retrieve and edit the same file, and includes means for revising an associated or linked file during times that it is being edited by multiple developers. Developers are presented with an intentionally filtered view of project files in order to hide details of the implementation. Developers may thereby view all of the project files regardless of the location and status of the files. Further, the present invention provides means for resolving conflicting changes to files on the server which were made by different developers.
These as well as other novel advantages, details, embodiments, features and objects of the present invention will be apparent to those skilled in the art from following the detailed description of the invention, the attached claims and accompanying drawings, listed herein, which are useful in explaining the invention.